package com.kykj.kykj.service.impl;

import com.kykj.kykj.dao.RouteDao;
import com.kykj.kykj.dao.UserDao;
import com.kykj.kykj.entity.RouteEntity;
import com.kykj.kykj.entity.RouteViewEntity;
import com.kykj.kykj.service.RouteService;
import com.kykj.kykj.vo.RouteVo;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;

import java.util.List;

@Component //注入SpringBoot
public class RouteServiceImpl implements RouteService {
    @Resource
    UserDao userDao;
    @Resource
    RouteDao routeDao;

    /**
     * 判定权限
     * @param uname 用户名
     * @param URI 访问的控制器路径
     * @return boolean:True/有访问权限，False:没有访问权限
     */
    @Override
    public boolean isRoute(String uname, String URI)  {
        List<RouteViewEntity> list = userDao.getUserRoute(uname);//获取当前用户的权限
        boolean flag = false;
        for (RouteViewEntity r:list  //遍历列表判定是否包含此权限
             ) {
            if (URI.contains(r.getController())){ //包含此URI
                flag=true;
                break;
            }
        }
        return flag;
    }

    /**
     * 添加路由
     * @param routeVo 路由对象
     * @return int
     */
    @Override
    public int addRoute(RouteVo routeVo) {
        return routeDao.addRoute(routeVo);
    }

    /**
     * 修改路由
     * @param routeVo 路由对象
     * @return int
     */
    @Override
    public int updateRoute(RouteVo routeVo) {
        return routeDao.updateRoute(routeVo);
    }

    /**
     * 删除路由
     * @param menuid 路由id
     * @return int
     */
    @Override
    public int delRoute(int menuid) {
        return routeDao.delRoute(menuid);
    }

    /**
     * 根据menuid获取对象
     * @param menuid menuid
     * @return RouteEntity
     */
    @Override
    public RouteEntity getRouteByMenuId(int menuid) {
        return routeDao.getRouteByMenuId(menuid);
    }

    /**
     *
     * @param name 用户名
     * @param controller 路径
     * @param start 起始位置
     * @param limit 每页的行数
     * @return List
     */
    @Override
    public List<RouteEntity> getRouteList(String name, String controller, int start, int limit) {
        if(!name.equals("")){//模糊查询
            name="%"+name+"%";
        }
        if(!controller.equals("")){//模糊查询
            controller="%"+controller+"%";
        }
        return routeDao.getRouteList(name, controller, start, limit);
    }

    /**
     * 获取路由总数
     * @return int
     */
    @Override
    public int getRouteCount() {
        return routeDao.getRouteCount();
    }
}
